import sun.util.resources.cldr.rn.LocaleNames_rn;

import java.util.LinkedHashMap;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-03-27
 * Time: 23:58
 */
public class Main {

    public static void main(String[] args) {
//        最后的参数是 true 说明是 基于 插入顺序, 即使是操作了之前的数据, 数据会被放在最后位置
        LinkedHashMap<Integer, Integer> linkedHashMap=new LinkedHashMap(3, 0.75f, true);
        linkedHashMap.put(100,10);
        linkedHashMap.put(110,11);
        linkedHashMap.put(120,12);
        System.out.println(linkedHashMap);
        System.out.println("获取元素");
        System.out.println(linkedHashMap.get(110));
        System.out.println(linkedHashMap);
        System.out.println(linkedHashMap.get(100));
        System.out.println(linkedHashMap);
        System.out.println("存放元素,LinkedHashMap 并不会删除头节点，" +
                "所以实现　LRUCache 时重写了 removeEldestEntry 方法: ");
        linkedHashMap.put(999,99);
        System.out.println("插入 key=999, value= 99");
        System.out.println(linkedHashMap);
    }

    public static void main3(String[] args) {
//        最后的参数是 false 说明是 基于 插入顺序, 即使是操作了之前的数据, 数据的位置不变
        LinkedHashMap<Integer, Integer> linkedHashMap=new LinkedHashMap(3, 0.75f, false);
        linkedHashMap.put(100,10);
        linkedHashMap.put(110,11);
        linkedHashMap.put(120,12);
        System.out.println(linkedHashMap);
        System.out.println("获取元素");
        System.out.println(linkedHashMap.get(110));
        System.out.println(linkedHashMap);
        System.out.println(linkedHashMap.get(100));
        System.out.println(linkedHashMap);
        System.out.println("存放元素,会删除头节点，因为头节点是最近最少使用的: ");
        linkedHashMap.put(999,99);
        System.out.println("插入 key=999, value= 99");
        System.out.println(linkedHashMap);
    }
    public static void main2(String[] args) {
        LRUCache lruCache = new LRUCache(3);
        lruCache.put(100,10);
        lruCache.put(110,11);
        lruCache.put(120,12);
        System.out.println(lruCache);
        System.out.println("获取元素");
        System.out.println(lruCache.get(110));
        System.out.println(lruCache);
        System.out.println(lruCache.get(100));
        System.out.println(lruCache);
        System.out.println("存放元素,会删除头节点，因为头节点是最近最少使用的: ");
        lruCache.put(999,99);
        System.out.println("插入 key=999, value= 99");
        System.out.println(lruCache);
    }

    public static void main1(String[] args) {
        MyLRUCache lruCache = new MyLRUCache(3);
        lruCache.put(100,10);
        lruCache.put(110,11);
        lruCache.put(120,12);
        lruCache.print();
        System.out.println("获取元素");
        System.out.println(lruCache.get(110));
        lruCache.print();
        System.out.println(lruCache.get(100));
        lruCache.print();
        System.out.println("存放元素,会删除头节点，因为头节点是最近最少使用的: ");
        lruCache.put(999,99);
        System.out.println("插入 key=999, value= 99");
        lruCache.print();
    }
}
